home *** CD-ROM | disk | FTP | other *** search
/ System Booster / System Booster.iso / Systemmonitors / RAMxV1.0 / RAMx.doc < prev    next >
Text File  |  1996-09-26  |  23KB  |  526 lines

  1. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  2. +                                                            +
  3. +                     RAMx Version 1.09                      +
  4. +                                                            +
  5. +       Copyright ©1995 Ian Dixon and IvanCo Software.       +
  6. +                                                            +
  7. +                    All rights reserved.                    +
  8. +                                                            +
  9. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  10.  
  11.  
  12. Author note:
  13. ------------
  14. The development of this version of RAMx is being discontinued because
  15. of various cosmetic compatibility problems with the 2.0+ operating
  16. systems and a few other reasons.  (Examples: a mysterious white bar at
  17. the bottom of the display when the window is selected, and not liking
  18. to be run in environments where Topaz 8 is not the system font.)
  19.  
  20. The next release, 2.0, will be available sometime early next year; I am
  21. completely rewriting the interface under gadtools.library.
  22.  
  23. Also, there are a very few inconsistencies between this doc file and the
  24. program, mostly because of this interface mess.  (Yeah, I know; don't
  25. design yer program by editing the doc file first!)  For example, if you
  26. wanted to write hexadecimal 1A as a shortword, instead of entering %1a in
  27. the writestring gadget, you should enter $001a.  In any case, just use
  28. '#' for decimal writes and '$' for hexadecimal (not !,@,%, or ^.), adding
  29. zero placeholders when necessary.  However, the symbols for decimal
  30. numbers will work for searches.  For example, !50 is a valid search
  31. parameter for finding the decimal value 50 on a byte.  A few of the keys
  32. in the keychart have also not been implemented.  These include returning
  33. from a jump (Amiga-J), ASCII chart (A), and the Editor (E).
  34.  
  35. One other thing:  there just *might* be an easter egg (hidden fun but not
  36. useful feature) hidden within RAMx.  I'd offer a clue, but "there is no
  37. help left."
  38.  
  39.  
  40. ***************************************************************************
  41.                          RAMx V1.09 by Ian Dixon
  42. ***************************************************************************
  43.  
  44. RELEASE NOTES:
  45.  
  46. Version:  Date:          Notes:
  47. ---------------------------------------------------------------------------
  48. 0.0       07-12-89       First  roots as BASIC memory  lister.  Idea  for
  49.                          graph...various  unfinished BASIC and C versions
  50.                          ...
  51.  
  52. 0.87      10-20-94       Pre-release.  Finally  got  around  to finishing
  53.                          most of assembly version.  Still  a  few quirks,
  54.                          such  as  lack  of   command   line   interface,
  55.                          and  tying  up  the  CLI  or  whatever  launched
  56.                          it.
  57.  
  58. 0.92      11-01-94       Fixed decimal conversion.   Added gadget updates
  59.                          (press U or  click DecGads).   Added line on top
  60.                          of graph to show range from cursor to endmarker.
  61.  
  62. 1.09      11-13-95       Cleaned  up  a bit. Final  release  until  almost
  63.                          fully rewritten version 2.0.  CLI interface works,
  64.                          and  Workbench  launching  no  longer crashes on
  65.                          exit.  (My first Aminet release ever [sniff..])
  66.  
  67. ---------------------------------------------------------------------------
  68.  
  69. ***************************************************************************
  70.  
  71.                               LEGAL JARGON:
  72.  
  73. This program is Copyright ©1995 by Ian Dixon.  All rights reserved.  RAMx
  74. is a freeware program.  However, donations and acknowledgements will be
  75. gratefully accepted.
  76.  
  77. RAMx is freely redistributable, meaning you may distribute it, provided this
  78. archive is intact and unaltered, compression excepted, and no copying fee is
  79. charged.  It is not to appear on any commercial release or commercial
  80. freeware/shareware compilation without my written consent.  I hereby give
  81. permission to Fred Fish and the compilers of the Aminet CD-ROMs.
  82.  
  83. NO LIABILITY IS ASSUMED FOR DAMAGES RESULTING FROM THE USE OR ABUSE OF THIS
  84. PROGRAM OR ANYTHING INCLUDED.
  85.  
  86. ***************************************************************************
  87.  
  88. WHAT IS RAMx?
  89.  
  90. RAMx is a graphical, full-featured memory editor written entirely in
  91. assembler.  Because it can alter memory, it can do nearly anything, like:
  92.  
  93. * Recover most or all of lost files still in RAM (i.e. an unsaved
  94.   text file in an editor when a crash occurs.)
  95.  
  96. * Cheat on games
  97.  
  98. * Alter running programs
  99.  
  100. * Edit system structures
  101.  
  102. * "Rip" text from demos and games  (how many *text* rippers do you have?)
  103.   For example, ripping the text from PAL demos which is not visible on a
  104.   NTSC display.
  105.  
  106.  
  107. SYSTEM REQUIREMENTS
  108. Theoretically, RAMx should run on any Amiga with any configuration, because
  109. I wrote it with all 680X0 chips in mind and didn't "cheat".  If you do have
  110. problems, write to me with your system specs, and I'll try to figure out
  111. what's up.  If you have a 68040 with copyback on, you may not be able to
  112. use any RAM-altering functions because RAMx writes directly to memory. 
  113. Turn the copyback mode off to write to memory.
  114.  
  115.  
  116. LOADING RAMx
  117. Load RAMx like any other program: Workbench, CLI, or any other method.
  118. To install RAMx on a hard drive, or anywhere else, drag the icon to
  119. wherever you want to keep it, or copy the file and .info icon.  It is
  120. entirely self-contained and can load from anywhere you copy it, with
  121. the obvious exception of "NIL:" ... ;-)
  122.  
  123.  
  124. USING RAMx
  125. The first thing you will probably notice is the graph at the top of the
  126. screen.  This is a visual representation of the memory area starting at the
  127. address in the GraphAdd gadget.  The InfoBox is the wide blue rectangle at
  128. the bottom of the screen.  This displays information about the graph and
  129. cursor, ASCII character codes, or a keychart.
  130.  
  131. If you understand how addresses of memory work, skip ahead to the asterisks.
  132.  
  133.  
  134. Crash course in Digital 101:
  135.  
  136. Each address of memory is like a mailbox containing a value from 0 to 255
  137. (or $00 to $FF in hexadecimal).  This is referred to as a byte.  The
  138. addresses are numbered, from 0 to infinity.  The addresses available depend
  139. on how much memory your computer has and 'where' the memory boards are
  140. connected.  The values in all of the addresses but those in the ROM chip
  141. can be changed.  This is how the computer stores data, such as programs,
  142. screen image data, RAM disk files, and anything else that is stored on the
  143. Mysterious Medium of Memory.
  144.  
  145. The computer can use 2 or 4 addresses at once to enable the storage of
  146. larger numbers.  To avoid confusion, just remember that this is the same
  147. as using decimal places.  For example, suppose address 2 stores the value
  148. $FF and address 3 stores $00.  When read separately, 2 contains 255 and 3
  149. contains 0.  When read together, they hold the value $FF00, or 65280 using
  150. the decimal system.  Two addresses read together contain a shortword, or
  151. word, valued from 0 to 65535.  Four addresses read together contain a
  152. longword, valued from 0 to 4294967296!  A long or short word must be
  153. located at an even-numbered address, unless you are using RAMx, which reads
  154. and writes them byte-by-byte.  However, a longword or shortword read at
  155. an odd address rarely has meaning or practical value.
  156.  
  157.  
  158. Hexadecimal - number system based on 16 instead of 10 (decimal).  Digits
  159.               are 0-9, A-F. A is 10, B is 11, etc.  The places are valued
  160.               1st, 16th, 256th, 4096th, etc. where the value of place X
  161.               equals 16^X multiplied by the digit. (get that?)
  162.  
  163. Example:  $4A9F
  164.  
  165. 4               4  times 16^3 or 4096   =  16384
  166. A               10 times 16^2 or 256    =   2560
  167. 9               9  times 16^1 or 16     =    144
  168. F               15 times 16^0 or 1      =     15
  169.                                            -----
  170.                                  $4A9F  =  19103
  171.  
  172. * * * * * *
  173.  
  174.  
  175. ---------------------------  Program Functions: ---------------------------
  176.  
  177.  
  178. 1.  The Graph
  179.  
  180. The graph at the top of the screen is a function graph.  If the graph
  181. starts at address #0, it is a function graph from address #0 to address
  182. #639 ($27F).  Each pixel on the X axis is an address.  The Y axis is the
  183. byte value at that address, divided by 4 to save screen space.  The top
  184. has the value 0-3 and the bottom the value #252-#255 ($FC-$FF).
  185.  
  186. I used this method to show more data on the screen than is possible with
  187. address numbers and values and to make it easier to visually scan a
  188. relatively large amount of data at once.
  189.  
  190. To move the graph, enter an address in the StartAdd gadget, (See Search
  191. for the format.) press the -/_ and +/= keys, which move it a screen at a
  192. time, or press (J)ump to place the graph at the address stored at the
  193. cursor, if it's legal.  Or, enter an address in the LeftAdd gadget to
  194. move between that and 32K onward using the proportional gadget under the
  195. graph.  To keep your place, press (S)ave Place, and to go back to this
  196. place, press (R)eturn.  The address of the graph is displayed in the
  197. Infobox.
  198.  
  199.  
  200. 2.  The Cursor
  201.  
  202. The cursor is the pixel visible above the graph.  If it is not at an
  203. address on the visible portion of the graph, it will not appear.  However,
  204. it can still be used and moved as if it were still visible.  The cursor can
  205. be moved by clicking on the graph with the right mouse button, entering a
  206. value in the CursorAdd gadget, or using the cursor keys.  Left and right
  207. move it respectively up and down a byte at a time, and up and down move it
  208. a longword at a time. Information about the cursor, including the address,
  209. byte, word, longword, and 8 characters of text are shown at the bottom left
  210. of the Infobox.  The cursor marks the beginning of the search, write,
  211. replace, and data dump functions.
  212.  
  213.  
  214. 3.  Search
  215.  
  216. This is a powerful function within RAMx that allows you to search through
  217. memory.  Enter the data to search for in the SearchString gadget in the
  218. following Simple & Easy Format, place the cursor, enter a stop address in
  219. EndRange, and click the Search gadget.
  220.  
  221. String      - Just enter the string, but if it begins with a "#" or
  222.               a "$", leave it off, or RAMx will think it's a number.
  223.  
  224.               If you know it lies on an even address, you can more than
  225.               double the search speed by selecting the WordStr gadget
  226.               or the "String search even only" menu.  This only works
  227.               for strings; all bytes are searched for on odd or even
  228.               addresses, and words and longwords on even addresses.
  229.  
  230. Decimal     - Enter a symbol followed by the number:
  231.               !  byte
  232.               @  word
  233.               #  longword
  234.  
  235. Hexadecimal - Enter a $ followed by the hex digits.
  236.  
  237. If you enter some weird, impossible number, RAMx will flash and refuse the
  238. search.  If it's found, RAMx will place the cursor at the first byte of
  239. the search and the graph 64 bytes behind.
  240.  
  241. For example, suppose you wanted to find a shortword that contains the number
  242. $FC.  You would enter
  243.  
  244.  %FC
  245.  
  246. in the SearchString gadget and click the Search gadget.  If and when it is
  247. found, the cursor will jump to the first byte, or in this case, $00.  The
  248. graph would jump to the address 50 bytes before the first byte.  RAMx would
  249. not jump to $FC because it was searched for as a shortword.  If a longword
  250. or shortword are searched for, RAMx will only search on even addresses,
  251. although it will permit the writing of them on odd addresses.
  252.  
  253. RAMx can address exactly 4 gigabytes of address space ($00000000 - $FFFFFFFF),
  254. so even if you've got a lot of RAM, you're covered.  Be careful, though:
  255. if you attempt to read certain addresses in the Amiga's custom chips it will
  256. modify their register values and probably crash the machine.
  257.  
  258.  
  259. 4.  Write
  260.  
  261. To write data to memory, enter it in the WriteString gadget in the Search
  262. format, place the cursor, and click the Write gadget.  I do NOT advise
  263. writing over ANYTHING in the 0-639 range, or anything you're not sure of,
  264. because you might just reset your computer or crash your system. (Read:
  265. ScreenMode=FIREWORKS_DISPLAY.)  It won't hurt anything,  but it can wipe
  266. out important unsaved items in memory or on ramdisk.  (Read "Legal Jargon"
  267. for "I Warned You" disclaimer)  To write a longword or a shortword, place
  268. the cursor at the beginning address you want the number to occupy.  It
  269. is possible, though not often useful, to write a short or longword at an
  270. odd address using RAMx, even though the 680x0 CPU refuses to do so.
  271.  
  272.  
  273. 5.  ReadText
  274.  
  275. This is a feature that allows a quick reading of text.  Click with the left
  276. mouse button on the graph where you want to begin reading, and hold it
  277. down.  The text will scroll across at the very bottom left of the Infobox,
  278. and a line will scroll across the cursor area denoting the area of memory
  279. you are reading.  Any bytes not representing text will appear as periods
  280. or spaces, depending on the state of the SPC/"." gadget.  If it is
  281. highlighted, it will be a period, otherwise, a space.  The speed can be
  282. adjusted with the slider gadget at the bottom right of the screen.
  283.  
  284.  
  285. 6.  Data Dumps
  286.  
  287. Data dumps "dump" data from memory to disk, or many AmigaDOS devices.
  288. There are 3 types of data dumps.  The raw dump copies the byte values from
  289. memory without any type of formatting or any other changes.  Text dumping
  290. finds strings of text of the length specified in "TextLength" and writes
  291. the address (in hex) and text to the file.  Hex dumping writes hex address
  292. numbers and bytes in the format below.
  293.  
  294. Set the cursor and EndRange around the area you wish to dump and click on
  295. a dump gadget.  A "requester" will appear.  Enter the desired filename or
  296. device name.  Some valid devices are PRT:, PAR:, NEWCON:, CON:, RAW:, NIL:,
  297. SER: and there may be others that work.
  298.  
  299. The format of the hex dump:
  300.  
  301. Address    Data                                            Text
  302. ---------------------------------------------------------------------------
  303. $00C03D40  02 8C 52 41 4D 78 56 32 2E 30 20 62 79 20 49 61 ..RAMxV2.0.by Ia
  304. $00C03D50  6E 20 44 69 78 6F 6E 00 00 D3 12 5E 76 33 FF 01 n Dixon..".^v3..
  305.  
  306. The format of the text dump:
  307.  
  308. Address    Text
  309. ---------------------------------------------------------------------------
  310. $00C03D42  RAMxV2.0 by Ian Dixon
  311. $00C03F37  File-System
  312.  
  313.  
  314.  
  315. 7.  Miscellaneous Small Functions to Make Life Easier
  316.  
  317.    7.1  Place Saving (S,R,I)
  318.  
  319.    This function stores the current graph and cursor positions.  To Save
  320.    your place, press S.  You are free to go elsewhere.  To Restore your
  321.    position, press R.  To swap the current and saved positons, press I.
  322.  
  323.    7.2  Graph and Cursor Movement
  324.  
  325.    The - and = keys will move the graph 640 bytes to the left or right.
  326.    The [ and ] keys move it 64 bytes, respectively.  The cursor keys can
  327.    be used to place the cursor instead of the gadget: Left and right move
  328.    it by one byte, and up and down move it by the longword.  Another less
  329.    precise method is to click on the graph with the right mouse button.
  330.    To move the graph 64 bytes behind the cursor, press P.
  331.  
  332.    7.3  Jumping Around
  333.  
  334.    This function can be really handy when tracing through system
  335.    structures.  To Jump the graph and cursor to the address contained at
  336.    the longword under the cursor, press J.  I won't promise anything, but
  337.    if the address is not part of RAM or ROM, it probably won't jump there.
  338.    No promises; the checker is anything but foolproof.  To return to where
  339.    you were before the jump, press Amiga-J.
  340.  
  341.  
  342.    7.4  Keychart
  343.  
  344.    The Help key or K will display a keychart.  The keychart can also be
  345.    toggled by clicking on the InfoBox with the right mouse button.  The
  346.    Q key will scroll upward and the A key downward through either chart,
  347.    or just click with the left mouse button on the top and bottom of the
  348.    InfoBox.  To go back to the normal InfoBox, press ESC or click on it
  349.    again with the right mouse button.
  350.  
  351.    7.5  Text Block Search
  352.  
  353.    Enter a length to search for in the TextLength gadget and click the
  354.    SrchTxt gadget.
  355.  
  356.    7.6  Fill Area  *not implemented yet
  357.  
  358.    Enter the data to fill with in WriteString.  (This can be anything BUT a
  359.    string)  Enter stop and start addresses in StartRange and Endrange.
  360.    Then press F for Fill Area and select the "Yes" gadget. 
  361.  
  362.    7.7  Workbench Pointer
  363.  
  364.    Press W to call OpenWorkBench() and place the cursor and graph at the
  365.    address of the Workbench screen.  If the Workbench is not present and
  366.    cannot be re-opened, it will "jump" to 0.
  367.  
  368.    7.8  E-Key text editor  * not implemented yet
  369.  
  370.    Place the cursor and press E to type in text.  The cursor will move as
  371.    you type, possibly off the screen. (keep going anyway, if needed) The
  372.    27 characters of text before the cursor can be seen at the lower left
  373.    corner of the InfoBox.
  374.  
  375.    Editor Keychart:
  376.  
  377.    Backspace   -  Moves cursor one byte to left
  378.    CursorKeys  -  Left and right move cursor one byte respectively
  379.    Return      -  Insert a returncode ($0A)
  380.    Left Alt    -  Insert a null byte
  381.    Esc         -  Quit the editor
  382.  
  383.  
  384.    7.9  Miscellaneous Among Miscellaneous
  385.  
  386.    There are numerous other functions too small to necessitate a section
  387.    to document them.  These are listed in the Keychart.
  388.  
  389.  
  390. 8.  Keychart
  391.  
  392. Here are all of the keyboard/mouse functions.  Some are not documented above.
  393. ---------------------------------------------------------------------------
  394.  Q - Scroll infoBox chart up     Cursor Right - cursor 1 byte to right
  395.  A - Scroll infoBox chart down   Cursor Left  - cursor 1 byte to left
  396.  D - Editor*                     Cursor Up    - cursor 1 long to right
  397.  U - Update address gadgets      Cursor Down  - cursor 1 long to left
  398.  G - Regraph                     RgtAmiga/J   - return from Jump*
  399.  I - Swap C/G pos. with (S)aved  RgtAmiga/Q   - QUIT!
  400.  J - Jump to longword at cursor  RgtMouseBtn  - place cursor at pointer
  401.  K - (K)eychart                  MidMouseBtn  - EndRange at pointer(?)
  402.  P - (P)lace graph at cursor     LftMouseBtn  - ReadText at pointer (hold)
  403.  R - (R)eturn to saved position  Help         - KeyChart
  404.  C - ASCII chart*                E            - EndRange at cursor address
  405.  S - Save cursor/graph Position  ESC          - Reset InfoBox Cursor/Graph
  406.  Z - Write null byte at cursor   W            - Cursor at Workbench ptr
  407.  [ - Graph  64 bytes to left     ]            - Graph  64 bytes to right
  408.  - - Graph 640 bytes to left     =            - Graph 640 bytes to right
  409.  Keys marked with '*' not implemented yet... :/
  410. ===========================================================================
  411.  
  412. UPGRADES! UPGRADES!
  413.  
  414. If you like this program and would like to receive a copy of the current
  415. version, just send $5.00 in the US or $6.00 from overseas in American funds
  416. to the following address along with your name and address.  Money orders are
  417. preferred.  You will receive the latest revision of RAMx, and the (messy)
  418. source if you request it, and any small utilities I write and release to
  419. the public domain on a high-quality disk.  Feel free to donate any extra
  420. alms for a starving programmer...
  421.  
  422.      Ian M. Dixon
  423.      #7 Allegheny Center
  424.      Apt 403
  425.      Pittsburgh, PA 15212
  426.  
  427. Questions, comments, and complaints are encouraged, not to mention free!
  428. If you have trouble getting RAMx to run on your system, write me and 
  429. include your system setup, hardware, and an explanation of the exact
  430. problem.  I will try to straighten things out.  I can also be reached
  431. over Internet at:
  432.  
  433.    zorak@telerama.lm.com
  434.    
  435. and on IRC as "zorak"
  436.  
  437. ===========================================================================
  438.  
  439. Possibilities for Future Revisions:  (* Will almost certainly happen.)
  440.  
  441.  1. Zoomable graph - able to specify end as well as beginning of graph
  442.  
  443. *2. Dynamic graphing - graphing over and over to observe changes over time
  444.  
  445. *3. Rewriting - keep writing values at a certain list of addresses
  446.  
  447. *4. Load, edit, and save files
  448.  
  449. *5. Monitoring a list of addresses for byte changes
  450.  
  451.  6. "Clickable" chart of memory boards and ability to select a RAM board to
  452.     search or save.
  453.  
  454. *7. The admittedly flaky interface will be implemented in MUI (Magical User
  455.     Interface,) or gadtools.library.  Sorry, 1.3/512K users, but it's
  456.     high time to upgrade!
  457.  
  458.  8. A built-in graphics ripper (A graphics ripper can find images in RAM
  459.                                 and save them to an IFF file, even after the
  460.                                 program has been exited or "erased" by a
  461.                                 system reboot in many cases.)
  462.  
  463.  
  464. ===========================================================================
  465.  
  466. Possible future releases, all in assembly:
  467.  
  468. UMAC (Universal Macros) 
  469.  A macro utility that will generate macros for any Intuition program
  470.  by recording keystrokes, gadget/menu selections, and mouse actions.
  471.  
  472. Life *
  473.  Yet another engine for the Game of Life (cellular automata).  Nearly
  474.  complete; will probably be released if I ever get around to Amiga-tizing
  475.  the interface...  8-}
  476.  
  477. Anibots **
  478.  Create your own societies of self-replicating virtual robots using a
  479.  language simpler than BASIC.  Will include genetic mutation abilities.
  480.  Nearing completion.
  481.  
  482. *  Life written by Ian Dixon and Gary Galland.
  483.  
  484. ** Anibots conceived and designed by Ian Dixon. Written by Gary Galland.
  485.  
  486. --------------------------------------------------------------------------
  487. My canonical thanklist of the highly esteemed is as follows:
  488. (in no order whatsoever)
  489. --------------------------------------------------------------------------
  490. Gary Galland ----- for being my college roomie, debug help, muchas ideas,
  491.                    and BEER
  492.  
  493. Doug Bennett ----- for being my college roomie, an Amiga to develop on while
  494.                    mine was down (about 5 months), and CHILI
  495.  
  496. Ken Wright ------- for the best BBS in town, testing, and RAM
  497.  
  498. Mike Wood -------- for fast search routine suggestions, sage Amiga
  499.                    assembly advice, and RADIOLOGY
  500.  
  501. Billy Williams --- for moral support, elec. guitar lessons, and PITTSBURGH
  502.  
  503. Carey Clevenger -- for ideas, movies, and MORTAL KOMBAT II
  504.  
  505. Commodore & crew - for the best damn computer available today, and
  506.                    MULTITASKING (Sayonara!  You will be missed!)
  507.  
  508. David Letterman -- for Late Night coding breaks, laughs, and CANNED HAM
  509.  
  510.                                  - - -
  511.  
  512. A special thanks to everyone in the list before Commodore for putting up
  513. with me over the years.  (Mike Wood or Ken Wright from Vienna, if you're
  514. reading this, drop me a line sometime soon, either over Internet or
  515. Snailnet...)
  516.  
  517. *Absolutely* no thanks to Microsoft, IBM, Apple, 7-Eleven, Rush Limbaugh,
  518. DeVry Institute of Technology in Columbus OH, Hardee's, Miss Ball (my 4th
  519. grade teacher), the Lamer Exterminator II virus, which destroyed about a
  520. week's worth of coding, or Tipper Gore, censorshit advocate.
  521.  
  522. --------------------------------------------------------------------------
  523.  
  524. MCP: End of line.
  525.  
  526.